package com.neusoft.control;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.neusoft.bean.AdminInfoBean;
import com.neusoft.myutils.MyUtil;
import com.neusoft.service.AdminInfoService;

/**
 * 使用注解的方式配置servlet，参数是映射路径，映射路径要和表单的action的值一致
 * 注解和xml配置servlet只能二选一
 */
@WebServlet("/AdminLoginServlet")
public class AdminLoginServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;   

	/**
	 * 进行转发控制处理
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//使用request对象获取表单数据
		//获取客户端输入的用户名
		String stradminName = request.getParameter("adminName");
		//获取客户端输入的密码
		String stradminPsw = request.getParameter("adminPsw");
		
		//AdminInfoBean aib = new AdminInfoBean();
		//第二部优化调用工具类的方法(利用泛型和反射创建对象)创建adminInfoBean对象
		AdminInfoBean aib = MyUtil.getInstance(AdminInfoBean.class);
		//List<AdminInfoBean> adminLst = AISFactory.getAdminInfoServiceInstance().doAdminLogined(stradminName,stradminPsw);
		//优化将adminInfoBean作为载体传值
		aib.setAdminName(stradminName);
		aib.setAdminPsw(stradminPsw);
		//根据客户端输入的用户名和密码作为查询条件，在数据库查询有没有匹配结果
		//List<AdminInfoBean> adminLst = AISFactory.getAdminInfoServiceInstance().doAdminLogined(aib);
		//优化通过工具类的获取对象的方法(通过泛型和反射获取实例对象的方法)获取AdminInfoService实例对象
		List<AdminInfoBean> adminLst =MyUtil.getInstance(AdminInfoService.class).doAdminLogined(aib);
		//根据查询结果进行转发控制
		if (adminLst != null && adminLst.size()>0) {
			//将当前登录成功的用户信息缓存到session中
			request.getSession().setAttribute("loginedAdminLst", adminLst.get(0));
			//登录成功跳转到相应界面
			//转发控制
			request.getRequestDispatcher("Logined/logined.jsp").forward(request, response);
		} else {
			//登录失败跳转到相关界面
			//重定向控制
			response.sendRedirect("login.jsp");	
		}
		
	}

}
